﻿
using Aker.DevTeam;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraReports.UI;
using Extensions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;

namespace Aker.Hammadde
{

    public partial class Elyaf : XForm
    {
        int elyafGrupId = -1;
        int elyafId = -1;
        DataTable dtGrup = new DataTable();
        Renk renk = new Renk(2);

        public Elyaf()
        {
            InitializeComponent();
        }

        private void Elyaf_Load(object sender, EventArgs e)
        {
            if (AppSession.UserInfo.UserId == 2)
                btnDeveloper.Visible = true;



            Data.TAM.ElyafTableAdapter.Fill(Data.DB.Elyaf);
            Data.TAM.ElyafCekimTableAdapter.Fill(Data.DB.ElyafCekim);
            Data.TAM.ElyafCinsTableAdapter.Fill(Data.DB.ElyafCins);
            Data.TAM.ElyafGrupTableAdapter.Fill(Data.DB.ElyafGrup);
            Data.TAM.ElyafKesitTableAdapter.Fill(Data.DB.ElyafKesit);
            Data.TAM.ElyafKullanimTableAdapter.Fill(Data.DB.ElyafKullanim);
            Data.TAM.ElyafParlaklikTableAdapter.Fill(Data.DB.ElyafParlaklik);
            Data.TAM.ElyafRenkTableAdapter.Fill(Data.DB.ElyafRenk);
            Data.TAM.TedarikciTableAdapter.Fill(Data.DB.Tedarikci);
            Data.TAM.BoyahaneTableAdapter.Fill(Data.DB.Boyahane);

            DataTable dtStokLines = Data.DM.ExecuteDataTable("GetStokLines", 1);
            Data.DB.StokLines.Merge(dtStokLines);


            leCins.Bind(Data.DB.ElyafCins, "Cins", "ElyafCinsId");

            leKesit.Bind(Data.DB.ElyafKesit, "Kesit", "ElyafKesitId");
            leKesit.EditValue = null;

            leParlaklik.Bind(Data.DB.ElyafParlaklik, "Parlaklik", "ElyafParlaklikId");
            leParlaklik.EditValue = null;
            leCekim.Bind(Data.DB.ElyafCekim, "Cekim", "ElyafCekimId");
            leCekim.EditValue = null;


            leRenk.QueryPopUp += leRenk_QueryPopUp;
            leRenk.CustomDisplayText += leRenk_CustomDisplayText;


            leKullanim.Bind(Data.DB.ElyafKullanim, "Kullanim", "ElyafKullanimId");

            leTedarikci.Bind(Data.DB.Tedarikci, "Unvan", "TedarikciId");
            leTedarikci.EditValue = null;

            leBoyahane.Bind(Data.DB.Boyahane, "Boyahane", "BoyahaneId");
            leBoyahane.EditValue = null;

            DataTable dtX = Data.DM.ExecuteDataTable("GetRaflar");
            leShelf.Bind(dtX, "Shelf", "ShelfId");
            leShelf.EditValue = null;

            leGrup.Bind(Data.DB.ElyafGrup.DefaultView.ToTable(false, "ElyafGrupId", "GrupKodu"), "GrupKodu", "ElyafGrupId");

            gvGrup.OptionsView.ShowViewCaption = false;
            GridManager.GetManager(gvGrup).GridMenu.AddMenu("Elyaf Grubunu Güncelle", GrupDuzenle);

            BindGrup();

            leCins.EditValueChanged += grupFilterChanged;
            leParlaklik.EditValueChanged += grupFilterChanged;
            leKesit.EditValueChanged += grupFilterChanged;
            leCekim.EditValueChanged += grupFilterChanged;
            leKullanim.EditValueChanged += grupFilterChanged;
            txtKalinlik.EditValueChanged += grupFilterChanged;
            txtUzunluk.EditValueChanged += grupFilterChanged;
            txtAciklama.EditValueChanged += grupFilterChanged;

            BindElyaf();

            leGrup.EditValueChanged += elyafFilterChanged;
            leTedarikci.EditValueChanged += elyafFilterChanged;
            leRenk.EditValueChanged += elyafFilterChanged;
            txtLot.EditValueChanged += elyafFilterChanged;
            txtAltAciklama.EditValueChanged += elyafFilterChanged;
            leBoyahane.EditValueChanged += elyafFilterChanged;

            GridMenu gmDetay = GridManager.GetManager(gvElyaf).GridMenu;
            gmDetay.AddMenu("Elyaf Güncelle", ElyafDuzenle);
            gmDetay.AddMenu("Barkod Yazdır", BarkodYazdir);
            gmDetay.AddMenu("Bu Renkten Yeni Giriş Yap", YeniGiris);


            gvGrup.EnableComplexFiltering("GrupAdi");

            gvGrup.RowCellClick += gvGrup_RowCellClick;
        }

        private void YeniGiris(object sender, EventArgs e)
        {
            elyafId = 0;
            int currentElyafId = gvElyaf.GetFocusedRowCellValue("ElyafId").ToIntNN();
            if (currentElyafId > 0)
            {
                btnElyafEkle.Text = "Elyaf Ekle";

                Aker.AkerDB.ElyafRow i = Data.DB.Elyaf.FindByElyafId(currentElyafId);

                leGrup.EditValue = null; //force editValuChanged
                leGrup.EditValue = i.ElyafGrupId;

                if (!i.IsTedarikciIdNull())
                    leTedarikci.EditValue = i.TedarikciId;
                else
                    leTedarikci.EditValue = null;

                if (!i.IsRenkIdNull())
                    leRenk.EditValue = i.RenkId;
                else
                    leRenk.EditValue = null;

                if (!i.IsLotNull())
                    txtLot.Text = i.Lot;
                else
                    txtLot.Text = "";

                if (!i.IsAciklamaNull())
                    txtAltAciklama.Text = i.Aciklama;
                else
                    txtAltAciklama.Text = "";

                if (!i.IsFiyatNull())
                {
                    seFiyat.EditValue = i.Fiyat;
                    if (!i.IsKDVNull())
                        chkKDV.Checked = i.KDV;
                }
                else
                {
                    seFiyat.EditValue = null;
                    chkKDV.Checked = false;
                }


                if (!i.IsCurrencyIdNull())
                    cmbCurrencyId.SelectedIndex = i.CurrencyId - 1;
                else
                    cmbCurrencyId.SelectedIndex = 0;

                DataRow[] sls = Data.DB.StokLines.Select("ElyafId=" + i.ElyafId + " and ShelfId is not null");
                if (sls.Length == 1)
                    leShelf.EditValue = sls[0]["ShelfId"].ToIntNN();
                else
                    leShelf.EditValue = null;

                if (!i.IsBoyahaneIdNull())
                    leBoyahane.EditValue = i.BoyahaneId;
                else
                    leBoyahane.EditValue = null;

                btnEndElyafEditing.Visible = false;
                seKG.Focus();
            }
        }

        private void BarkodYazdir(object sender, EventArgs e)
        {
            int[] rows = gvElyaf.GetSelectedRows();
            if (rows.Length == 0 && gvElyaf.FocusedRowHandle > -1)
                rows = new int[] { gvElyaf.FocusedRowHandle };

            if (rows.Length > 0)
            {
                List<int> ids = new List<int>();
                foreach (int i in rows)
                    ids.Add(gvElyaf.GetDataRow(i)["ElyafId"].ToIntNN());

                ProductReportSettings settings = new ProductReportSettings();
                settings.chkManualSirali.Checked = false;
                settings.chkManualSirali.Visible = false;
                settings.lblManual.Visible = false;

                if (settings.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    int emptyCount = Convert.ToInt32(settings.emptyCount.Value);
                    int copyCount = Convert.ToInt32(settings.copyCount.Value);
                    HammaddeReport hr = new HammaddeReport(1, String.Join(",", ids), emptyCount, copyCount);
                    hr.ShowPreview();
                }
            }
            else
                ShowError("Barkod yazdırmak için satırları seçin !");
        }

        void gvGrup_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            SetElyaf();
        }

        void leRenk_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
        {
            int renkId = leRenk.EditValue.ToIntNN();
            if (renkId > 0)
            {
                AkerDB.ElyafRenkRow renk = Data.DB.ElyafRenk.FindByRenkId(renkId);
                string kod = "";
                if (!renk.IsKodNull())
                    kod = renk.Kod + "/";
                if (!renk.IsRenkNull())
                    kod = kod + renk.Renk;
                else
                    kod = kod.Substring(0, kod.Length - 1);
                e.DisplayText = kod;
            }
            else
                e.DisplayText = "Seçiniz...";
        }

        private void leRenk_QueryPopUp(object sender, CancelEventArgs e)
        {
            e.Cancel = true;
            int renkId = leRenk.EditValue.ToIntNN();
            if (renk.Focus(renkId) == System.Windows.Forms.DialogResult.OK)
                leRenk.EditValue = renk.RenkId;
        }

        private void ElyafDuzenle(object sender, EventArgs e)
        {
            int elyafId = gvElyaf.GetFocusedRowCellValue("ElyafId").ToIntNN();
            if (elyafId > 0)
            {
                this.elyafId = elyafId;
                btnElyafEkle.Text = "Elyaf Güncelle";

                Aker.AkerDB.ElyafRow i = Data.DB.Elyaf.FindByElyafId(elyafId);

                leGrup.EditValue = null; //force editValuChanged
                leGrup.EditValue = i.ElyafGrupId;

                if (!i.IsTedarikciIdNull())
                    leTedarikci.EditValue = i.TedarikciId;
                else
                    leTedarikci.EditValue = null;

                if (!i.IsRenkIdNull())
                    leRenk.EditValue = i.RenkId;
                else
                    leRenk.EditValue = null;

                if (!i.IsLotNull())
                    txtLot.Text = i.Lot;
                else
                    txtLot.Text = "";

                if (!i.IsAciklamaNull())
                    txtAltAciklama.Text = i.Aciklama;
                else
                    txtAltAciklama.Text = "";

                DataRow[] sls = Data.DB.StokLines.Select("ElyafId=" + i.ElyafId);
                if (sls.Length == 1)
                {
                    if (sls[0]["KG"].ToDecimalNN() > 0)
                        seKG.EditValue = sls[0]["KG"].ToDecimalNN();
                    else
                        seKG.EditValue = null;

                    if (sls[0]["ShelfId"].ToIntNN() > 0)
                        leShelf.EditValue = sls[0]["ShelfId"].ToIntNN();
                    else
                        leShelf.EditValue = null;
                }
                else
                    throw new ApplicationException("Birden çok giriş var!!");

                if (!i.IsFiyatNull())
                {
                    seFiyat.EditValue = i.Fiyat;
                    if (!i.IsKDVNull())
                        chkKDV.Checked = i.KDV;
                }
                else
                {
                    seFiyat.EditValue = null;
                    chkKDV.Checked = false;
                }


                if (!i.IsCurrencyIdNull())
                    cmbCurrencyId.SelectedIndex = i.CurrencyId - 1;
                else
                    cmbCurrencyId.SelectedIndex = 0;



                if (!i.IsBoyahaneIdNull())
                    leBoyahane.EditValue = i.BoyahaneId;
                else
                    leBoyahane.EditValue = null;

                btnEndElyafEditing.Visible = true;
            }
        }


        private void GrupDuzenle(object sender, EventArgs e)
        {
            int grupId = gvGrup.GetFocusedRowCellValue("ElyafGrupId").ToIntNN();
            if (grupId > 0)
                FillGrup(grupId);
        }

        private void FillGrup(int GrupId)
        {
            elyafGrupId = GrupId;
            btnGrupEkle.Text = "Elyaf Grubunu Güncelle";

            Aker.AkerDB.ElyafGrupRow i = Data.DB.ElyafGrup.FindByElyafGrupId(elyafGrupId);

            btnKesitNull.PerformClick();
            txtKalinlik.Text = "";
            txtUzunluk.Text = "";
            btnParlaklikNull.PerformClick();
            btnCekimNull.PerformClick();
            txtAciklama.Text = "";

            leCins.EditValue = i.ElyafCinsId;

            if (!i.IsElyafKullanimIdNull())
                leKullanim.EditValue = i.ElyafKullanimId;

            if (!i.IsElyafKesitIdNull())
                leKesit.EditValue = i.ElyafKesitId;

            if (!i.IsKalinlikNull() && i.Kalinlik != "")
                txtKalinlik.Text = i.Kalinlik;

            if (!i.IsUzunlukNull() && i.Uzunluk != "")
                txtUzunluk.Text = i.Uzunluk;

            if (!i.IsElyafParlaklikIdNull())
                leParlaklik.EditValue = i.ElyafParlaklikId;

            if (!i.IsElyafCekimIdNull())
                leCekim.EditValue = i.ElyafCekimId;

            if (!i.IsAciklamaNull() && i.Aciklama != "")
                txtAciklama.Text = i.Aciklama;

            btnEndGrupEditing.Visible = true;
        }


        private void BindGrup()
        {
            dtGrup = Data.DM.ExecuteDataTable("GetElyafGrup");
            gvGrup.Init(dtGrup);
            gvGrup.SetCaptions("GrupAdi:Grup Adı", "Kalinlik:Kalınlık", "Parlaklik:Parlaklık", "Cekim:Çekim", "Kullanim:Kullanım", "GrupAciklama:Açıklama");
            gvGrup.MakeColumnInvisible("ElyafGrupId");
            gvGrup.OptionsView.ShowViewCaption = false;
            gvGrup.MakeRowSelectable();
            gvGrup.MakeReadOnly();
            gvGrup.BestFitColumns();

        }

        private void BindElyaf()
        {
            string filter = gvElyaf.ActiveFilterString;
            gvElyaf.Init(Data.DM.ExecuteDataTable("GetElyaf"));
            gvElyaf.SetCaptions("ElyafId:Elyaf Id", "Tedarikci:Tedarikçi", "Symbol:Parabirimi");
            gvElyaf.MakeColumnInvisible("ElyafGrupId");
            gvElyaf.OptionsView.ShowViewCaption = false;
            gvElyaf.MakeRowSelectable();
            gvElyaf.OptionsSelection.MultiSelect = true;
            gvElyaf.MakeReadOnly();
            gvElyaf.ActiveFilterString = filter;
            //  gvElyaf.AddSummary("KG");
            gvElyaf.BestFitColumns();

            leTedarikci.EditValue = null;
            leRenk.EditValue = null;
            leBoyahane.EditValue = null;
            leShelf.EditValue = null;

            txtLot.Text = "";
            txtAltAciklama.Text = "";
            seKG.EditValue = null;
            seFiyat.EditValue = null;
            chkKDV.Checked = false;
            cmbCurrencyId.SelectedIndex = 0;
        }

        private void btnGrupEkle_Click(object sender, EventArgs e)
        {
            if (leCins.EditValue.ToIntNN() < 0)
            {
                XtraMessageBox.Show("Cins belirtilmeli!", Language.Uyari, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            AkerDB.ElyafGrupRow elyafGrup;

            if (elyafGrupId > 0)
                elyafGrup = Data.DB.ElyafGrup.FindByElyafGrupId(elyafGrupId);
            else
                elyafGrup = Data.DB.ElyafGrup.NewElyafGrupRow();

            elyafGrup.ElyafCinsId = leCins.EditValue.ToIntNN();
            elyafGrup.ElyafKullanimId = leKullanim.EditValue.ToIntNN();

            if (leKesit.EditValue.ToIntNN() > -1)
                elyafGrup.ElyafKesitId = leKesit.EditValue.ToIntNN();
            else
                elyafGrup.SetElyafKesitIdNull();

            if (txtKalinlik.Text != "")
                elyafGrup.Kalinlik = txtKalinlik.Text;
            else
                elyafGrup.SetKalinlikNull();

            if (txtUzunluk.Text != "")
                elyafGrup.Uzunluk = txtUzunluk.Text;
            else
                elyafGrup.SetUzunlukNull();

            if (leParlaklik.EditValue.ToIntNN() > -1)
                elyafGrup.ElyafParlaklikId = leParlaklik.EditValue.ToIntNN();
            else
                elyafGrup.SetElyafParlaklikIdNull();

            if (leCekim.EditValue.ToIntNN() > -1)
                elyafGrup.ElyafCekimId = leCekim.EditValue.ToIntNN();
            else
                elyafGrup.SetElyafCekimIdNull();

            if (txtAciklama.Text != "")
                elyafGrup.Aciklama = txtAciklama.Text;
            else
                elyafGrup.SetAciklamaNull();


            string ad = "";
            if (!elyafGrup.IsKalinlikNull() && !elyafGrup.IsUzunlukNull())
            {
                ad = elyafGrup.Kalinlik.Replace("DN", "") + "/" + elyafGrup.Uzunluk;
            }
            else
            {
                if (!elyafGrup.IsKalinlikNull())
                    ad = elyafGrup.Kalinlik;
                else if (!elyafGrup.IsUzunlukNull())
                    ad = elyafGrup.Uzunluk;
            }

            if (!elyafGrup.IsElyafCinsIdNull())
                ad = ad + " " + Data.DB.ElyafCins.FindByElyafCinsId(elyafGrup.ElyafCinsId).Cins;

            if (!elyafGrup.IsElyafKesitIdNull() && elyafGrup.ElyafKesitId != 1)
                ad = ad + " " + Data.DB.ElyafKesit.FindByElyafKesitId(elyafGrup.ElyafKesitId).Kesit;

            if (!elyafGrup.IsElyafParlaklikIdNull())
                ad = ad + " " + Data.DB.ElyafParlaklik.FindByElyafParlaklikId(elyafGrup.ElyafParlaklikId).Parlaklik;

            if (!elyafGrup.IsElyafCekimIdNull())
                ad = ad + " " + Data.DB.ElyafCekim.FindByElyafCekimId(elyafGrup.ElyafCekimId).Cekim;

            if (!elyafGrup.IsElyafKullanimIdNull() && elyafGrup.ElyafKullanimId != 1)
                ad = ad + " " + Data.DB.ElyafKullanim.FindByElyafKullanimId(elyafGrup.ElyafKullanimId).Kullanim;

            if (!elyafGrup.IsAciklamaNull() && elyafGrup.Aciklama.Trim() != "")
                ad = ad + " " + elyafGrup.Aciklama;

            elyafGrup.GrupAdi = ad.Replace("\r\n", "");

            elyafGrup.GrupKodu = "EL." + elyafGrup.ElyafGrupId.ToString().PadLeft(3, '0');

            if (elyafGrupId < 1)
                Data.DB.ElyafGrup.AddElyafGrupRow(elyafGrup);

            Data.TAM.ElyafGrupTableAdapter.Update(Data.DB.ElyafGrup);

            if (elyafGrupId < 1)
            {
                elyafGrup.GrupKodu = "EL." + elyafGrup.ElyafGrupId.ToString().PadLeft(3, '0');
                Data.TAM.ElyafGrupTableAdapter.Update(elyafGrup);
            }

            BindGrup();

            leGrup.Bind(Data.DB.ElyafGrup.DefaultView.ToTable(false, "ElyafGrupId", "GrupKodu"), "GrupKodu", "ElyafGrupId");
            gvGrup.FocusedRowHandle = gvGrup.RowCount - 1;

            leCins.EditValue = null;
            //btnKesitNull.PerformClick();
            //btnParlaklikNull.PerformClick();
            //btnCekimNull.PerformClick();
            //txtKalinlik.Text = "";0
            //txtUzunluk.Text = "";
            //txtAciklama.Text = "";

            btnEndGrupEditing.PerformClick();
        }

        private void btnEditList_Click(object sender, EventArgs e)
        {
            string ListName = (sender as SimpleButton).Tag.ToStringNN();

            ListeDuzenleme ld = new ListeDuzenleme(ListName);
            ld.ShowDialog();
        }

        private void btnElyafEkle_Click(object sender, EventArgs e)
        {
            decimal KG = seKG.EditValue.ToDecimalNN();
            if (KG == 0)
            {
                XtraMessageBox.Show("KG yazılmalı!", Language.Uyari, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            AkerDB.ElyafRow elyaf;

            if (elyafId > 0)
                elyaf = Data.DB.Elyaf.FindByElyafId(elyafId);
            else
                elyaf = Data.DB.Elyaf.NewElyafRow();


            elyaf.ElyafGrupId = leGrup.EditValue.ToIntNN();


            if (leTedarikci.EditValue.ToIntNN() > 0)
                elyaf.TedarikciId = leTedarikci.EditValue.ToIntNN();
            else
                elyaf.SetTedarikciIdNull();

            if (leRenk.EditValue.ToIntNN() > 0)
                elyaf.RenkId = leRenk.EditValue.ToIntNN();
            else
                elyaf.SetRenkIdNull();

            if (txtLot.Text != "")
                elyaf.Lot = txtLot.Text.ToUpper();
            else
                elyaf.SetLotNull();


            if (txtAltAciklama.Text != "")
                elyaf.Aciklama = txtAltAciklama.Text;
            else
                elyaf.SetAciklamaNull();

            //if (leShelf.EditValue.ToIntNN() > 0)
            //    elyaf.ShelfId = leShelf.EditValue.ToIntNN();
            //else
            //    elyaf.SetShelfIdNull();

            if (leBoyahane.EditValue.ToIntNN() > 0)
                elyaf.BoyahaneId = leBoyahane.EditValue.ToIntNN();
            else
                elyaf.SetBoyahaneIdNull();

            decimal fiyat = seFiyat.EditValue.ToDecimalNN();

            if (fiyat > 0)
            {
                elyaf.Fiyat = fiyat;
                elyaf.KDV = chkKDV.Checked;
                elyaf.CurrencyId = cmbCurrencyId.SelectedIndex + 1;
            }
            else
            {
                elyaf.SetFiyatNull();
                elyaf.SetKDVNull();
                elyaf.SetCurrencyIdNull();
            }

            bool yeni = elyafId < 1;

            if (yeni)
            {
                elyaf.EklenmeTarihi = DateTime.Now;
                elyaf.EkleyenId = AppSession.UserInfo.UserId;
                Data.DB.Elyaf.AddElyafRow(elyaf);
            }

            Data.TAM.ElyafTableAdapter.Update(elyaf);

            if (yeni)
            {
                AkerDB.StokLinesRow sl = Data.DB.StokLines.NewStokLinesRow();
                sl.KG = KG;
                sl.ElyafId = elyaf.ElyafId;

                if (leShelf.EditValue.ToIntNN() > 0)
                    sl.ShelfId = leShelf.EditValue.ToIntNN();

                sl.OlusturulmaTarihi = DateTime.Now;
                Data.DB.StokLines.AddStokLinesRow(sl);
                Data.TAM.StokLinesTableAdapter.Update(sl);
            }
            else
            {
                DataRow[] sls = Data.DB.StokLines.Select("ElyafId=" + elyaf.ElyafId);
                if (sls.Length == 1)
                {
                    int shelfId = leShelf.EditValue.ToIntNN();
                    decimal qty = seKG.EditValue.ToDecimalNN();

                    if (shelfId > 0)
                        sls[0]["ShelfId"] = shelfId;
                    else
                        sls[0]["ShelfId"] = DBNull.Value;

                    if (qty > 0)
                        sls[0]["KG"] = qty;
                    else
                        sls[0]["KG"] = DBNull.Value;

                    Data.TAM.StokLinesTableAdapter.Update(sls[0]);
                }
                else
                    throw new ApplicationException("Birden çok giriş var!!");
            }

            BindElyaf();

            btnEndElyafEditing.PerformClick();
        }

        private void gvGrup_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
        {
            if (e.FocusedRowHandle > -1)
                SetElyaf();
        }

        private void SetElyaf()
        {
            System.Data.DataRow dr = gvGrup.GetFocusedDataRow();

            int elyafGrupId = dr["ElyafGrupId"].ToIntNN();
            leGrup.EditValue = elyafGrupId;

            GenerateFilterElyaf();
            gvElyaf.ActiveFilterString = "[ElyafGrupId] = " + elyafGrupId;
        }

        private string[] GetVals(DataRow dr, params string[] colNames)
        {
            List<string> vals = new List<string>();
            foreach (string colName in colNames)
            {
                vals.Add(dr[colName].ToStringNN().Trim());
            }
            return vals.ToArray();
        }

        private void toolTipController_GetActiveObjectInfo(object sender, ToolTipControllerGetActiveObjectInfoEventArgs e)
        {
            if (e.SelectedControl != gcElyaf)
                return;

            GridHitInfo hitInfo = gvElyaf.CalcHitInfo(e.ControlMousePosition);

            if (hitInfo.InRow == false)
                return;

            SuperToolTipSetupArgs toolTipArgs = new SuperToolTipSetupArgs();


            DataRow dr = gvElyaf.GetDataRow(hitInfo.RowHandle);
            if (dr == null)
                return;

            toolTipArgs.Title.Text = "EL." + dr["ElyafGrupId"].ToString().PadLeft(3, '0') + " Grup Özellikleri";

            DataRow[] drGrups = dtGrup.Select("ElyafGrupId = " + dr["ElyafGrupId"]);

            if (drGrups != null)
            {
                DataRow drGrup = drGrups[0];

                string BodyText = String.Format("<b>Cins:</b>  {0}" +
                                                "\r\n<b>Kesit:</b>  {1}" +
                                                "\r\n<b>Kalınlık:</b>  {2}" +
                                                "\r\n<b>Uzunluk:</b>  {3}" +
                                                "\r\n<b>Parlaklık:</b>  {4}" +
                                                "\r\n<b>Çekim:</b>  {5}" +
                                                "\r\n<b>Kullanım:</b>  {6}" +
                                                "\r\n<b>Açıklama:</b>  {7}"

                , GetVals(drGrup, "Cins", "Kesit", "Kalinlik", "Uzunluk", "Parlaklik", "Cekim", "Kullanim", "GrupAciklama")
                );

                toolTipArgs.Contents.Text = BodyText;
                toolTipArgs.AllowHtmlText = DefaultBoolean.True;
            }

            e.Info = new ToolTipControlInfo();
            //<bold>Updated by John (DevExpress Support):</bold>
            //e.Info.Object = hitInfo.Column;
            e.Info.Object = hitInfo.HitTest.ToString() + hitInfo.RowHandle.ToString(); //NewLine
            //<bold>End Update</bold>
            e.Info.ToolTipType = ToolTipType.SuperTip;
            e.Info.SuperTip = new SuperToolTip();
            e.Info.SuperTip.Setup(toolTipArgs);

        }

        private void GenerateFilterGrup()
        {
            List<string> filters = new List<string>();

            if (leCins.EditValue.ToIntNN() > -1)
                filters.Add("Cins = '" + leCins.Text + "'");

            if (leParlaklik.EditValue.ToIntNN() > -1)
                filters.Add("Parlaklik = '" + leParlaklik.Text + "'");

            if (leKesit.EditValue.ToIntNN() > -1)
                filters.Add("Kesit = '" + leKesit.Text + "'");

            if (leCekim.EditValue.ToIntNN() > -1)
                filters.Add("Cekim = '" + leCekim.Text + "'");

            if (leKullanim.EditValue.ToIntNN() > -1)
                filters.Add("Kullanim = '" + leKullanim.Text + "'");


            if (txtKalinlik.EditValue.ToStringNN() != "")
                filters.Add("StartsWith([Kalinlik], '" + txtKalinlik.EditValue.ToStringNN().Trim() + "')");

            if (txtUzunluk.EditValue.ToStringNN() != "")
                filters.Add("StartsWith([Uzunluk], '" + txtUzunluk.EditValue.ToStringNN() + "')");

            if (txtAciklama.EditValue.ToStringNN() != "")
                filters.Add("StartsWith([GrupAciklama], '" + txtAciklama.EditValue.ToStringNN() + "')");

            gvGrup.ActiveFilterString = String.Join(" and ", filters);
        }

        private void grupFilterChanged(object sender, EventArgs e)
        {
            GenerateFilterGrup();
        }

        private void elyafFilterChanged(object sender, EventArgs e)
        {
            GenerateFilterElyaf();
        }

        private void GenerateFilterElyaf()
        {
            List<string> filters = new List<string>();

            if (leGrup.EditValue.ToIntNN() > -1)
                filters.Add("[ElyafGrupId] = " + leGrup.EditValue.ToIntNN());

            if (leTedarikci.EditValue.ToIntNN() > -1)
                filters.Add("Tedarikci = '" + leTedarikci.Text + "'");

            if (leRenk.EditValue.ToIntNN() > 0)
                filters.Add("Renk = '" + leRenk.Text + "'");

            if (leBoyahane.EditValue.ToIntNN() > -1)
                filters.Add("Boyahane = '" + leBoyahane.Text + "'");

            if (txtLot.EditValue.ToStringNN() != "")
                filters.Add("StartsWith([Lot], '" + txtLot.EditValue.ToStringNN() + "')");

            if (txtAltAciklama.EditValue.ToStringNN() != "")
                filters.Add("StartsWith([Aciklama], '" + txtAltAciklama.EditValue.ToStringNN() + "')");

            gvElyaf.ActiveFilterString = String.Join(" and ", filters);
        }


        private void btnDeveloper_Click(object sender, EventArgs e)
        {
            foreach (DataRow dr in Data.DB.ElyafGrup.Select("GrupAdi is null"))
            {
                int grupId = dr["ElyafGrupId"].ToIntNN();
                FillGrup(grupId);

                btnGrupEkle.PerformClick();
            }
        }

        private void btnEndGrupEditing_Click(object sender, EventArgs e)
        {
            elyafGrupId = -1;
            btnGrupEkle.Text = "Elyaf Grubu Ekle";
            btnEndGrupEditing.Visible = false;
        }

        private void btnEndElyafEditing_Click(object sender, EventArgs e)
        {
            elyafId = -1;
            btnElyafEkle.Text = "Elyaf Ekle";
            btnEndElyafEditing.Visible = false;
        }

        #region Set Nulls
        private void btnTedarikciNull_Click(object sender, EventArgs e)
        {
            leTedarikci.EditValue = null;
        }

        private void btnRenkNull_Click(object sender, EventArgs e)
        {
            leRenk.EditValue = null;
        }

        private void btnKesitNull_Click(object sender, EventArgs e)
        {
            leKesit.EditValue = null;
        }

        private void btnBoyahaneNull_Click(object sender, EventArgs e)
        {
            leBoyahane.EditValue = null;
        }

        private void btnShelfNull_Click(object sender, EventArgs e)
        {
            leShelf.EditValue = null;
        }
        private void btnParlaklikNull_Click(object sender, EventArgs e)
        {
            leParlaklik.EditValue = null;
        }

        private void btnCekimNull_Click(object sender, EventArgs e)
        {
            leCekim.EditValue = null;
        }
        #endregion
    }
}